/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ub.informatica.disseny.movieaff.modelo;
import java.util.ArrayList;

/**
 *
 * @author mat.aules
 */
public class Pelicula {
    private String id;
    private String mins;
    private String year;
    private String title;
    private String desc;
    private String fecha;
    private float promedio;
    private float totalValoraciones;
    private int totalRepro;
    private Productora productora;
    private ArrayList<Actor> actores;
    private ArrayList<Director> directores;
    private Genero genero;
    private ArrayList<Valoracion> listaValoraciones;
    

    
    
    public Pelicula(String id, String mins, String year, String title, String desc, String fecha, 
            float promedio, float totalValoraciones, int totalRepro, Productora productora,
            Genero genero) {
        this.id = id;
        this.mins = mins;
        this.year = year;
        this.title = title;
        this.desc = desc;
        this.fecha = fecha;
        this.promedio = promedio;
        this.totalValoraciones = totalValoraciones;
        this.totalRepro = totalRepro;
        this.productora = productora;
        this.genero = genero;
        actores = new ArrayList();
        directores = new ArrayList();
        listaValoraciones = new ArrayList();
        
   }
   
   public Pelicula(String id, String mins, String year, String title, String desc) {
      
    this(id,mins,year,title,desc,null,0,0,0,null,null);
    
}

    /**
     * @return the id
     */
    public String getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return the mins
     */
    public String getMins() {
        return mins;
    }

    /**
     * @param mins the mins to set
     */
    public void setMins(String mins) {
        this.mins = mins;
    }

    /**
     * @return the year
     */
    public String getYear() {
        return year;
    }

    /**
     * @param year the year to set
     */
    public void setYear(String year) {
        this.year = year;
    }

    /**
     * @return the title
     */
    public String getTitle() {
        return title;
    }

    /**
     * @param title the title to set
     */
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * @return the desc
     */
    public String getDesc() {
        return desc;
    }

    /**
     * @param desc the desc to set
     */
    public void setDesc(String desc) {
        this.desc = desc;
    }

    /**
     * @return the promedio
     */
    public float getPromedio() {
        return promedio;
    }

    /**
     * @param promedio the promedio to set
     */
    public void setPromedio(float promedio) {
        this.promedio = promedio;
    }

    /**
     * @return the totalValoraciones
     */
    public float getTotalValoraciones() {
        return totalValoraciones;
    }

    /**
     * @param totalValoraciones the totalValoraciones to set
     */
    public void setTotalValoraciones(float totalValoraciones) {
        this.totalValoraciones = totalValoraciones;
    }

    /**
     * @return the totalRepro
     */
    public int getTotalRepro() {
        return totalRepro;
    }

    /**
     * @param totalRepro the totalRepro to set
     */
    public void setTotalRepro(int totalRepro) {
        this.totalRepro = totalRepro;
    }

    /**
     * @return the productora
     */
    public Productora getProductora() {
        return productora;
    }

    /**
     * @param productora the productora to set
     */
    public void setProductora(Productora productora) {
        this.productora = productora;
    }

    /**
     * @return the genero
     */
    public Genero getGenero() {
        return genero;
    }

    /**
     * @param genero the genero to set
     */
    public void setGenero(Genero genero) {
        this.genero = genero;
    }
    
    /**
     * @return the fecha
     */
    public String getFecha() {
        return fecha;
    }

    /**
     * @param fecha the fecha to set
     */
    public void setFecha(String fecha) {
        this.fecha = fecha;
    }
    
    public void addDirector(Director director) {
        directores.add(director);
    }
    
    public void addActor(Actor actor) {
        actores.add(actor);
    }
    
     private String datosActor() {
        for(int i=0;i<actores.size();i++){
            return actores.get(i).toString();
        }
        return null;
    }

    private String datosDirector() {
        for(int i=0;i<directores.size();i++){
            return directores.get(i).toString();
        }
        return null;
    }
    
    
    public void addValoracion(Valoracion valoracion){
        listaValoraciones.add(valoracion);
        Float aux = this.getTotalValoraciones();
        String val = valoracion.getPuntuacio();
        Float nuevaVal = Float.parseFloat(val);
        aux = aux + nuevaVal;
        this.setTotalValoraciones(aux);
        obtenValorPromedio();
    }
    private void obtenValorPromedio() {
        int tamaño = listaValoraciones.size();
        float valorPromedio = this.getTotalValoraciones()/tamaño;
        this.setPromedio(valorPromedio);
    }
    
    public void sumarVisual() {
        int visualizacion;
        visualizacion = this.getTotalRepro();
        visualizacion++;
        this.setTotalRepro(totalRepro);
    }
    
    void obtenerDatos() {
        System.out.println("Titulo de la película");
        System.out.println(this.getTitle());
        System.out.println("Fecha visualización");
        System.out.println(this.getFecha());
        for (int i = 0; i <directores.size(); i++){
            System.out.println(directores.get(i));
        }
    }
   
    
    
    @Override
     public String toString(){
        return ("\nPelicula amb ID: " + getId() + "--------------------------------------" +
                "\nTitol: "+ getTitle() + "\nMinuts: " + getMins()+ "\nAny: " + getYear() +
                "\nDescripció: " + getDesc() + "\nPromedio: " + getPromedio() + getProductora()+
                "\nTotal reproducciones: " + getTotalRepro()+ datosActor() + datosDirector()+
                getProductora() + getGenero());
    }

    

    
    
}